package com.pe.pgn.clubpgn.domain;

import java.util.Calendar;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.Type;
import org.springframework.format.annotation.DateTimeFormat;

import com.pe.pgn.clubpgn.common.CLPConstantes;


@Entity
@Table(name = "clpb_cliente_persona")
public class ClpbClientePersona extends CamposAuditoria {

	private static final long serialVersionUID = 1L;
	private Long id;
	private String deNombre;
    private String deApePaterno;
    private String deApeMaterno;
    private String coCodeNumeroDocumento;
    private String deDireccion;
    private String coTelefonoFijo;
    private String coCelular;
    private Calendar daFechaNacimiento;
    private String deMail;
    private Calendar daFechaInscripcion;
    private ClpbTipoDocumentoPersona clpbTipoDocumentoPersona;
    private ClpbTarjetaPersona clpbTarjetaPersona;
    private ClpbEstadoCivil clpbEstadoCivil;
    private ClpmUbigeo clpmUbigeo;
    private ClpbEmpresaCelular clpbEmpresaCelular;
    private String deComentarioHabilitado;
    private String sexo;
    private boolean stHabilitado;
    private boolean stClientePersona;
    
    private String codProvTelefono;
    private String codProvCelular;
    private String tienehijo = "";
	private String tieneauto = "";
    private String jrDireccion;
    private String nombreDireccion;
    private String numeroDireccion;
    private String mzDireccion;
    private String dptoDireccion;
    private String nombreUrbDireccion;
    private String secDireccion;
	
    private ClpbEmpresaAfiliadora clpbEmpresaAfiliadora;
    
    @Id
    @Column(name="id")
    @SequenceGenerator(name="seqclientepersona", sequenceName="seq_cliente_persona")
    @GeneratedValue(generator="seqclientepersona")
	public Long getId() {
		return id;
	}
   
    @Column(name = "de_nombre", nullable = false, length = 100)
	public String getDeNombre() {
		return deNombre;
	}

    @Column(name = "de_ape_paterno", nullable = false, length = 100)
	public String getDeApePaterno() {
		return deApePaterno;
	}

    @Column(name = "de_ape_materno", nullable = false, length = 100)
	public String getDeApeMaterno() {
		return deApeMaterno;
	}

    @Column(name = "co_code_numero_documento", nullable = false, length = 100)
	public String getCoCodeNumeroDocumento() {
		return coCodeNumeroDocumento;
	}

    @ManyToOne(targetEntity = ClpbTipoDocumentoPersona.class)
    @JoinColumn(name="co_tipo_documento",nullable=true)
	public ClpbTipoDocumentoPersona getClpbTipoDocumentoPersona() {
		return clpbTipoDocumentoPersona;
	}

    @Column(name = "de_direccion", length = 200)
	public String getDeDireccion() {
		return deDireccion;
	}

    @Column(name = "co_telefono_fijo", nullable = true, length = 20)
	public String getCoTelefonoFijo() {
		return coTelefonoFijo;
	}
    
    @Column(name = "co_celular", nullable = true, length = 20)
	public String getCoCelular() {
		return coCelular;
	}

    @Column(name = "da_fecha_nacimiento", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaNacimiento() {
		return daFechaNacimiento;
	}

    @Column(name = "de_mail", nullable = true, length = 50)
	public String getDeMail() {
		return deMail;
	}

    @Column(name = "da_fecha_inscripcion", nullable = true)
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaInscripcion() {
		return daFechaInscripcion;
	}

    @ManyToOne(targetEntity = ClpbTarjetaPersona.class)
    @JoinColumn(name="co_tarjeta_persona")
	public ClpbTarjetaPersona getClpbTarjetaPersona() {
		return clpbTarjetaPersona;
	}
    
    @ManyToOne(targetEntity = ClpbEstadoCivil.class)
    @JoinColumn(name="co_estado_civil", nullable = true)
	public ClpbEstadoCivil getClpbEstadoCivil() {
		return clpbEstadoCivil;
	}

    @Column(name = "st_cliente_persona", nullable = false)
	@Type(type = "yes_no") 
	public boolean isStClientePersona() {
		return stClientePersona;
	}

    @ManyToOne(targetEntity = ClpmUbigeo.class)
    @JoinColumn(name="co_ubigeo", nullable = true)
	public ClpmUbigeo getClpmUbigeo() {
		return clpmUbigeo;
	}

    @ManyToOne(targetEntity = ClpbEmpresaCelular.class)
    @JoinColumn(name="co_empresa_celular", nullable = true)
	public ClpbEmpresaCelular getClpbEmpresaCelular() {
		return clpbEmpresaCelular;
	}

    @Column(name = "st_habilitado", nullable = true)
	@Type(type = "yes_no") 
	public boolean isStHabilitado() {
		return stHabilitado;
	}

    @Column(name = "de_comentario_habilitado", nullable = true, length = 50)
	public String getDeComentarioHabilitado() {
		return deComentarioHabilitado;
	}
    
	@Column(name = "co_usuario_creador", updatable = false, nullable = false, length = 30)
	public String getCoUsuarioCreador() {
		return coUsuarioCreador;
	}

    @Column(name = "da_fecha_creacion", updatable = false, nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaCreacion() {
		return daFechaCreacion;
	}

	@Column(name = "co_usuario_modificador", length = 30)
	public String getCoUsuarioModificador() {
		return coUsuarioModificador;
	}

    @Column(name = "da_fecha_modificacion")
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaModificacion() {
		return daFechaModificacion;
	}        

	public void setId(Long id) {
		this.id = id;
	}

	public void setDeNombre(String deNombre) {
		this.deNombre = deNombre;
	}

	public void setDeApePaterno(String deApePaterno) {
		this.deApePaterno = deApePaterno;
	}

	public void setDeApeMaterno(String deApeMaterno) {
		this.deApeMaterno = deApeMaterno;
	}

	public void setCoCodeNumeroDocumento(String coCodeNumeroDocumento) {
		this.coCodeNumeroDocumento = coCodeNumeroDocumento;
	}

	public void setClpbTipoDocumentoPersona(
			ClpbTipoDocumentoPersona clpbTipoDocumentoPersona) {
		this.clpbTipoDocumentoPersona = clpbTipoDocumentoPersona;
	}

	public void setDeDireccion(String deDireccion) {
		this.deDireccion = deDireccion;
	}

	public void setCoTelefonoFijo(String coTelefonoFijo) {
		this.coTelefonoFijo = coTelefonoFijo;
	}

	public void setCoCelular(String coCelular) {
		this.coCelular = coCelular;
	}

	public void setDaFechaNacimiento(Calendar daFechaNacimiento) {
		this.daFechaNacimiento = daFechaNacimiento;
	}

	public void setDeMail(String deMail) {
		this.deMail = deMail;
	}

	public void setDaFechaInscripcion(Calendar daFechaInscripcion) {
		this.daFechaInscripcion = daFechaInscripcion;
	}

	public void setClpbTarjetaPersona(ClpbTarjetaPersona clpbTarjetaPersona) {
		this.clpbTarjetaPersona = clpbTarjetaPersona;
	}

	public void setClpbEstadoCivil(ClpbEstadoCivil clpbEstadoCivil) {
		this.clpbEstadoCivil = clpbEstadoCivil;
	}

	public void setStClientePersona(boolean stClientePersona) {
		this.stClientePersona = stClientePersona;
	}

	public void setClpmUbigeo(ClpmUbigeo clpmUbigeo) {
		this.clpmUbigeo = clpmUbigeo;
	}

	public void setClpbEmpresaCelular(ClpbEmpresaCelular clpbEmpresaCelular) {
		this.clpbEmpresaCelular = clpbEmpresaCelular;
	}

	public void setStHabilitado(boolean stHabilitado) {
		this.stHabilitado = stHabilitado;
	}

	public void setDeComentarioHabilitado(String deComentarioHabilitado) {
		this.deComentarioHabilitado = deComentarioHabilitado;
	}

	@Override
	public boolean equals(Object o) {
		return false;
	}

	@Override
	public int hashCode() {
		return 0;
	}

	@Override
	public String toString() {
		return  this.deNombre + CLPConstantes.ESPACIO_BLANCO + this.deApePaterno + CLPConstantes.ESPACIO_BLANCO + this.deApeMaterno;
	}

	@Column(name = "de_sexo", length = 20,nullable=false)
	public String getSexo() {
		return sexo;
	}

	public void setSexo(String sexo) {
		this.sexo = sexo;
	}

	@Column(name = "jr_direccion",nullable=true)
	public String getJrDireccion() {
		return jrDireccion;
	}

	public void setJrDireccion(String jrDireccion) {
		this.jrDireccion = jrDireccion;
	}

	@Column(name = "nombre_direccion",nullable=true)
	public String getNombreDireccion() {
		return nombreDireccion;
	}

	public void setNombreDireccion(String nombreDireccion) {
		this.nombreDireccion = nombreDireccion;
	}

	@Column(name = "numero_direccion",nullable=true)
	public String getNumeroDireccion() {
		return numeroDireccion;
	}

	public void setNumeroDireccion(String numeroDireccion) {
		this.numeroDireccion = numeroDireccion;
	}
	
	@Column(name = "mz_direccion",nullable=true)
	public String getMzDireccion() {
		return mzDireccion;
	}

	public void setMzDireccion(String mzDireccion) {
		this.mzDireccion = mzDireccion;
	}

	@Column(name = "dpto_direccion",nullable=true)
	public String getDptoDireccion() {
		return dptoDireccion;
	}

	public void setDptoDireccion(String dptoDireccion) {
		this.dptoDireccion = dptoDireccion;
	}

	@Column(name = "nombre_urb_direccion",nullable=true)
	public String getNombreUrbDireccion() {
		return nombreUrbDireccion;
	}

	public void setNombreUrbDireccion(String nombreUrbDireccion) {
		this.nombreUrbDireccion = nombreUrbDireccion;
	}

	@Column(name = "sec_direccion",nullable=true)
	public String getSecDireccion() {
		return secDireccion;
	}

	public void setSecDireccion(String secDireccion) {
		this.secDireccion = secDireccion;
	}

	@Column(name = "de_tienehijo", length = 20,nullable=true)
	public String getTienehijo() {
		return tienehijo;
	}

	public void setTienehijo(String tienehijo) {
		this.tienehijo = tienehijo;
	}

	@Column(name = "de_tieneauto", length = 20,nullable=true)
	public String getTieneauto() {
		return tieneauto;
	}

	public void setTieneauto(String tieneauto) {
		this.tieneauto = tieneauto;
	}

	@Column(name = "co_codprov_telefono", nullable = true, length = 20)
	public String getCodProvTelefono() {
		return codProvTelefono;
	}

	public void setCodProvTelefono(String codProvTelefono) {
		this.codProvTelefono = codProvTelefono;
	}

	@Column(name = "co_codprov_celular", nullable = true, length = 20)
	public String getCodProvCelular() {
		return codProvCelular;
	}

	public void setCodProvCelular(String codProvCelular) {
		this.codProvCelular = codProvCelular;
	}
	
	@ManyToOne(targetEntity = ClpbEmpresaAfiliadora.class)
	@JoinColumn(name = "co_empresa_afiliadora")
	public ClpbEmpresaAfiliadora getClpbEmpresaAfiliadora() {
		return this.clpbEmpresaAfiliadora;
	}

	public void setClpbEmpresaAfiliadora(
			ClpbEmpresaAfiliadora clpbEmpresaAfiliadora) {
		this.clpbEmpresaAfiliadora = clpbEmpresaAfiliadora;
	}
}
